﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using PUCP.SI2.SGIRP.BE;
using PUCP.SI2.SGIRP.DA;

namespace PUCP.SI2.SGIRP.DA
{
    public class DAOCliente
    {

        public List<ClienteBE> QueryAll()
        {
            MySqlConnection conn = new coneccion().getInstance();

            List<ClienteBE> lista = new List<ClienteBE>();

            conn.Open();

            String query = "SELECT * FROM Cliente ";
            MySqlCommand cmd = new MySqlCommand(query, conn);

            MySqlDataReader rd = cmd.ExecuteReader();

            while (rd.Read())
            {
                int codigo = rd.GetInt32("CODIGO");
                String ruc =rd.GetString("RUC");
                String razonSocial = rd.GetString("RAZON SOCIAL");
                String rubro=rd.GetString("RUBRO");
                String telefono = rd.GetString("TELEFONO");
                String numeroPartida=rd.GetString("NUMERO PARTIDA");
                String dirFiscal = rd.GetString("DIRECCION FISCAL");
                String dirSucursal = rd.GetString("DIRECCION SUCURSAL");
                String nombreContacto = rd.GetString("NOMBRE CONTACTO");
                String cargoContacto = rd.GetString("CARGO CONTACTO");
                String emailContacto = rd.GetString("EMAIL CONTACTO");
                int estado=rd.GetInt32("ESTADO");
            }

            return lista;

        }

        public static int AddCliente(ClienteBE cl)
        {
            int retorno = 0;
            String sql = "INSERT into Cliente(ruc,razonSocial,rubro) values " +
                         "(@RUC ,@RAZONSOCIAL, @RUBRO)";

            MySqlConnection conn = new coneccion().getInstance();
            conn.Open();

            MySqlCommand cmd = new MySqlCommand(sql, conn);


            cmd.Parameters.AddWithValue("@RUC", cl.Ruc);
            cmd.Parameters.AddWithValue("@RAZONSOCIAL", cl.RazonSocial);
            cmd.Parameters.AddWithValue("@RUBRO", cl.Rubro);


            retorno = cmd.ExecuteNonQuery();

            conn.Close();

            return retorno;
            /*         
            
            ClienteBE cl = new ClienteBE();
                cl.Codigo = codigo;
                cl.Ruc = ruc;
                cl.RazonSocial = razonSocial;
                cl.Rubro = rubro;
                cl.Telefono = telefono;
                cl.NumeroPartida = numeroPartida;
                cl.DirFiscal = dirFiscal;
                cl.DirSucursal = dirSucursal;
                cl.NombreContacto = nombreContacto;
                cl.CargoContacto = cargoContacto;
                cl.EmailContacto = emailContacto;
                cl.Estado = estado;

                lista.Add(cl);
             */



        }      
        
        

        //Update Cliente

        public void UpdateCliente(ClienteBE cl)
        {
            String sql = "UPDATE  Cliente SET codigo = @CODCLIENTE" +
                         "ruc = @RUC ,razonSocail=@RAZONSOCIAL, rubro = @RUBRO , telefono=@TELEFONO, numPartida = @NUMPARTIDA,"+
                         "dirFiscal = @DIRFISCAL ,dirSucursal = @DIRSUCURSAL , nombreContacto = @NombreContacto ," +
                         "cargoContacto = @CARGOCONTACTO, emailContacto=@EMAILCONTACTO, estado=@ESTADO" +
                         "WHERE codigo = @CODIGO ";

            MySqlConnection conn = new coneccion().getInstance();
            conn.Open();

            MySqlCommand cmd = new MySqlCommand(sql, conn);

            cmd.Parameters.AddWithValue("@CODCLIENTE", cl.Codigo);
            cmd.Parameters.AddWithValue("@RUC", cl.Ruc);
            cmd.Parameters.AddWithValue("@RAZONSOCAIL", cl.RazonSocial);
            cmd.Parameters.AddWithValue("@RUBRO", cl.Rubro);
            cmd.Parameters.AddWithValue("@TELEFONO", cl.Telefono);
            cmd.Parameters.AddWithValue("@NUMPARTIDA", cl.NumeroPartida);
            cmd.Parameters.AddWithValue("@DIRFISCAL", cl.DirFiscal);
            cmd.Parameters.AddWithValue("@DIRSUCURSAL", cl.DirSucursal);
            cmd.Parameters.AddWithValue("@NOMBRECONTACTO", cl.NombreContacto);
            cmd.Parameters.AddWithValue("@CARGOCONTACTO", cl.CargoContacto);
            cmd.Parameters.AddWithValue("@EMAILCONTACTO", cl.EmailContacto);
            cmd.Parameters.AddWithValue("@ESTADO", cl.Estado);

            cmd.ExecuteNonQuery();

            conn.Close();

        }


        //Dar de baja a un cliente

        public void DesactivarCliente(int id)
        {


            String sql = "UPDATE  cliente SET estado = @1 , estadoCliente = @2 WHERE codigo = @codigo ";

            MySqlConnection conn = new coneccion().getInstance();
            conn.Open();

            MySqlCommand cmd = new MySqlCommand(sql, conn);

            cmd.Parameters.AddWithValue("@1", 0);
            cmd.Parameters.AddWithValue("@2", "INACTIVO");

            cmd.ExecuteNonQuery();

            conn.Close();
            
        }

    }
}
